class SallesController < ApplicationController
  before_filter :check_authentication, :except => [:show, :index]
  layout 'layout'
  
  # GET /salles
  # GET /salles.xml
  def index
    @salles = Salle.all(:order =>"ordre_salle")
    @title = "Liste des salles"
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @salles }
    end
  end

  # GET /salles/1
  # GET /salles/1.xml
  def show
    @salle = Salle.find(params[:id])
    @title = "Voir "+@salle.nom_salle
    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @salle }
    end
  end

  # GET /salles/new
  # GET /salles/new.xml
  def new
    @salle = Salle.new
    @title = "Création d'une nouvelle salle"
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @salle }
    end
  end

  # GET /salles/1/edit
  def edit
    @salle = Salle.find(params[:id])
    @title = "Modification de "+@salle.nom_salle
  end

  # POST /salles
  # POST /salles.xml
  def create
    @salle = Salle.new(params[:salle])
    if request.xml_http_request?
      if @salle.save
        addTolog(current_user.id,"La salle " + @salle.nom_salle.to_s + " a été créée")
        @salles = Salle.all
        render :update do |page|
          page.replace_html "liste_salles", :partial => 'salles/listSalle', :locals => {:salles => @salles}
          #page.insert_html :bottom, "liste_salles", :partial => 'salles/salle', :locals => {:salle => @salle, :salle_id => @salle.id}
          page.replace_html "notice_message", "La salle a été crée avec succès"
          page << "gererNoticeMessage()"
          #page << "$('trash').hide()"
        end 
        #render(:partial => 'listSalle', :locals => { :salles => @salles, :notice_salle => notice_salle })
      end
    else
      @title = "Création d'une salle"
      respond_to do |format|
        if @salle.save
          addTolog(current_user.id,"La salle " + @salle.nom_salle.to_s + " a été créée")
          flash[:notice] = 'Salle crée avec succès.'
          format.html { redirect_to(@salle) }
          format.xml  { render :xml => @salle, :status => :created, :location => @salle }
        else
          format.html { render :action => "new" }
          format.xml  { render :xml => @salle.errors, :status => :unprocessable_entity }
        end
      end
     end
  end

  # PUT /salles/1
  # PUT /salles/1.xml
  def update
    @salle = Salle.find(params[:id])
    respond_to do |format|
      if @salle.update_attributes(params[:salle])
        addTolog(current_user.id,"La salle " + @salle.nom_salle.to_s + " a été mise à jour")
        flash[:notice] = 'Salle mise à jour avec succès.'
        format.html { redirect_to(@salle) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @salle.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /salles/1
  # DELETE /salles/1.xml
  def destroy
    @salle = Salle.find(params[:id])
    @salle.destroy
    addTolog(current_user.id,"La salle " + @salle.nom_salle.to_s + " a été supprimé")
    @machines_update = Machine.find_all_by_salle_id(params[:id])

    @machines_update.each { |machine_u|
      machine_u.update_attributes(:salle_id => '0')      
    }
    
    @machines = Machine.find_all_by_salle_id(0)
    @salles = Salle.all
    if request.xml_http_request?
      render :update do |page|
        page.replace_html "liste_machine_sans_salle", "<h2>Machine(s) sans salle</h2>"
        page.insert_html :bottom, "liste_machine_sans_salle", :partial => 'machines/listMachine', :locals => {:machines => @machines, :salle_id => 0}
        #page.replace_html "liste_salles", :partial => 'salles/listSalle', :locals => {:salles => @salles}
        page.replace_html "table_salle_"+@salle.id.to_s, ""
        page.replace_html "notice_message", "La salle a été supprimé avec succès"
        page << "gererNoticeMessage()"
        #page << "$('notification').hide()"
      end 
    else
      respond_to do |format|
        format.html { redirect_to(salles_url) }
        format.xml  { head :ok }
      end
    end
  end
  
  def sort
    addTolog(current_user.id,"Les salles ont étés triées")
    params[:liste_salles].each_with_index do |id, index|
      Salle.update_all(['ordre_salle=?', index+1], ['id=?', id])
    end
    render :nothing => true
  end
  
  def importMachines
    @salle_id = params[:salle_id]
  end
  
  def importMachinesWithNmap
    @salle = Salle.find(params[:salle_id])
    @salle.update_attributes(:nb_import_en_cours => @salle.nb_import_en_cours+1)
    t1 = Thread.new{
      #system("ruby script/runner \"Salle.importMachines('"+params[:salle_id].to_s+"','"+params[:debut_ip_1].to_s+"','"+params[:debut_ip_2].to_s+"')\"")
      #Salle.importMachines(params[:salle_id],params[:debut_ip_1],params[:debut_ip_2],params[:fin_ip_1],params[:fin_ip_2])
      #system("start /min /SEPARATE cmd /k ruby script/runner \"Salle.importMachines('"+params[:salle_id].to_s+"','"+params[:debut_ip_1].to_s+"','"+params[:debut_ip_2].to_s+"','"+params[:fin_ip_1].to_s+"','"+params[:fin_ip_2].to_s+"')\"")
      if params[:choix_import] == "reseau_plage"
        system("start /b /SEPARATE importMachines.bat "+params[:salle_id].to_s+" "+params[:debut_ip_1].to_s+" "+params[:debut_ip_2].to_s+" "+params[:fin_ip_1].to_s+" "+params[:fin_ip_2].to_s)
      elsif params[:choix_import] == "reseau_entier"
        system("start /b /SEPARATE importMachines.bat "+params[:salle_id].to_s+" * * * *")
      end      
    }
  
    #t1.join
  
    redirect_to '/salles/'+params[:salle_id].to_s
  end
end